<?php

chdir('..');
require 'inc/linker.php';

$linker = new Linker;
function Add($name, $v)
{
  global $linker;
  $b = new Blob($name, $v);
  $linker->AddBlob($b, 0, false);
}

Add('mop00data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01");
Add('mop01data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xEA");
Add('mop02data', "\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xCC");
Add('mop03data', "\xFA\xF0\xFF\xFA\xFB\xF0\xFF\xFA\xFA\xF0\xFF\xFA\xFA\xF0\xFF\xFA\xFA\xF0\xFF\xFA\xFA\xF0\xFF\xFA\xFA\xF0\xFF\xFA\xFA\xF0\xFF\xFA\x00");
Add('mop04data', "\x0A\x00\xF0\xF0\x0A\x00\xF0\xF0\x0A\x00\xF0\xF0\x0A\x00\xF0\xF0\x0A\x00\x30\x30\x0A\x00\x30\x30\x0A\x00\xF0\xF0\x0A\x00\xF0\xF0\x00");
Add('mop05data', "\x00\x00\x0E\x0A\x00\x00\x0E\x0A\x00\x00\x0E\x0A\x00\x00\x0E\x0A\x00\x00\xCE\xCA\x00\x00\xCE\xCA\x00\x00\x0E\x0A\x00\x00\x0E\x0A\x00");
Add('mop06data', "\x0A\x00\xF0\x00\x0A\x00\xF0\x00\x0A\x00\xF0\x00\x0A\x00\xF0\x00\x0A\x00\xF0\x00\x0A\x00\xF0\x00\x0A\x00\xF0\x00\x0A\x00\xF0\x00\x00");
Add('mop07data', "\x00\xF0\x00\xFA\x01\xF0\x00\xFA\x00\xF0\x00\xFA\x00\xF0\x00\xFA\x00\xF0\x00\xFA\x00\xF0\x00\xFA\x00\xF0\x00\xFA\x00\xF0\x00\xFA\x00");
Add('mop08data', "\x0B\x00\x0E\x00\x0A\x00\x0E\x00\x0A\x00\x0E\x00\x0A\x10\x0E\x00\x0A\x00\x0E\x00\x0A\x00\x0E\x00\x0A\x00\x0E\x00\x0A\x00\x0E\x00\x07");
Add('mop09data', "\x00\x00\x02\x32\x00\x00\x02\x32\x00\x00\x02\x32\x00\x00\x02\x32\x00\x00\x00\x00\x00\x00\x0E\xFA\x00\x00\x02\x32\x00\x00\x02\x32\x00");
Add('mop10data', "\x00\x00\x0C\xC8\x00\x00\x0C\xC8\x00\x00\x0C\xC8\x00\x00\x0C\xC8\x00\x00\x0E\xFA\x00\x00\x00\x00\x00\x00\x0C\xC8\x00\x00\x0C\xC8\x00");
Add('mop11data', "\xAE\xAE\xAA\xAA\xBE\xBE\xAA\xAA\xAE\xAF\xAA\xAA\x04\x0C\x00\x00\xAA\xAA\xAA\xAA\x00\x05\x00\x00\xAA\xAA\xAA\xAA\x00\x00\x00\x00\x00");
Add('mop12data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xC8\xCC\xCC\xCC\x00\x00\x00\x00\x00\x0C\x00\x00\x11\x11\x00\x00\x00");
Add('mop13data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x11\x10\x11\x00\x00\x00\x00\x11\x11\x00\x00\x00\x00\x00\x00\x00");
Add('mop14data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0C\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop15data', "\x01\x01\x01\x01\x00\x00\x01\x01\x00\x00\x01\x01\x00\x00\x01\x01\x00\x00\x01\x00\x00\x00\x01\x01\x00\x00\x01\x01\x00\x00\x01\x01\x07");
Add('mop16data', "\xAA\xA2\xAA\xAA\xBA\xB2\xAA\xAA\xAA\xA2\xAA\xAA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xBB\xBA\xAA\xAA\x11\x10\x00\x00\x00");
Add('mop17data', "\xEA\xE0\xEE\xEA\xFA\xF0\xEE\xEA\xEA\xE0\xEE\xEA\xEA\xE0\xEE\xEA\x00\x00\x00\x00\xFA\xF0\xFE\xFA\xFA\xF0\xEE\xEA\xFA\xF0\xEE\xEA\x00");
Add('mop18data', "\x04\x0A\x00\x00\x04\x0A\x00\x00\x04\x0A\x00\x00\x04\x0A\x00\x00\x05\x0A\x00\x00\x05\x0A\x00\x00\x05\x0A\x00\x00\x05\x0A\x00\x00\x00");
Add('mop19data', "\x00\x00\x00\x00\x10\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop1Adata', "\x00\x00\x00\x00\xCC\xC4\xCC\xC8\x00\x00\x00\x00\xCC\xCC\xCC\xC8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop20data', "\xCC\xCC\xCC\xC8\xCC\xCC\xCC\xC8\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop21data', "\x00\x00\x00\x00\x00\x00\x00\x00\xCC\xCC\xCC\xC8\xCC\xC4\xCC\xC8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop22data', "\xCC\xC4\xCC\xC8\xCC\xC4\xCC\xC8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop23data', "\x00\x00\x00\x00\x00\x00\x00\x00\xCC\xCC\xCC\xC8\xCC\xCC\xCC\xC8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop24data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\xC8\xC4\xCC\xC8\x00\x00\x00\x00\x00");
Add('mop25data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\xC8\xC1\xCC\xC8\x00");
Add('mop26data', "\xC8\xC0\xCC\xC8\xC8\xC0\xCC\xC8\xC8\xC0\xCC\xC8\xC8\xC0\xCC\xC8\xFA\xF0\xFE\x22\x00\x00\x00\x00\xC8\xC0\xCC\xC8\xC8\xC0\xCC\xC8\x00");
Add('mop27data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xD8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop28data', "\xD9\xD5\xDC\xDD\xC9\xC5\xDC\xDD\xD8\xC5\xDC\xDD\xD9\xC5\xDC\xDD\x00\x05\x00\x05\x00\x05\x00\x05\xC8\xC5\xDC\xDD\xC8\xC5\xDC\xDD\x07");
Add('mop29data', "\x00\x00\x00\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop30data', "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop31data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop32data', "\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07");
Add('mop33data', "\x01\x00\x00\x00\x01\x00\x00\x00\x00\x10\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07");
Add('mop34data', "\x01\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07");
Add('mop35data', "\x01\x00\x01\x01\x00\x00\x01\x01\x00\x00\x01\x01\x00\x00\x01\x01\x00\x00\x01\x00\x00\x00\x01\x01\x00\x00\x01\x01\x00\x00\x01\x01\x07");
Add('mop36data', "\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x01\x01\x00");
Add('mop37data', "\x01\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x01\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x07");
Add('mop38data', "\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop39data', "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\xAA\xAA\xAA\xAA\x00");
Add('mop40data', "\xAB\xA2\xAA\xAA\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x07");
Add('mop41data', "\x00\x00\x01\x01\xBA\xB2\xAB\xAA\x00\x00\x01\x01\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x01\x00\x00\x01\x01\x00\x00\x01\x00\x00");
Add('mop42data', "\x00\x00\x00\x00\x00\x00\x00\x00\xAA\xA2\xAA\xAA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop43data', "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00");
Add('mop44data', "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00");
Add('mop45data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xAA\xA2\xAA\xAA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xAA\xAA\xAA\xAA\x00");
Add('mop46data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xBB\xBA\xAA\xAA\x11\x10\x00\x00\x00");
Add('mop47data', "\xAE\xAE\xAA\xAA\xAE\xAE\xAA\xAA\xAE\xAE\xAA\xAA\xAE\xAF\xAA\xAA\x00\x0C\x00\x01\xAA\xAA\xAA\xAA\x00\x00\x00\x00\xAA\xAA\xAA\xAA\x00");
Add('mop48data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xCC\xCC\xCC\xCC\x00\x0C\x00\x00\x00\x01\x00\x00\x00");
Add('mop49data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x11\x11\x10\x10\x00\x01\x00\x00\x00\x00\x00\x00\x00");
Add('mop50data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0C\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00");
Add('mop51data', "\x01\x00\x00\x01\x00\x01\x00\x01\x01\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x07");
Add('mop52data', "\xEE\xEE\xEE\xEA\xEE\xEE\xEE\xEA\xEE\xEE\xEE\xEA\xEE\xEF\xEE\xEA\x00\x0D\x00\x01\xFF\xFF\xFE\xFE\xFB\xFF\xEE\xEA\xFB\xFB\xEE\xEA\x00");
Add('mop53data', "\xEE\xEE\xEE\xEA\xFE\xFE\xEE\xEA\xEE\xEE\xEE\xEA\xEE\xEF\xEE\xEA\x00\x0D\x00\x01\xFF\xFF\xFE\xFE\xFB\xFF\xEE\xEA\xFB\xFB\xEE\xEA\x00");
Add('mop54data', "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");
$linker->Merge();
$space = Array(0 => 0x4000);
$linker->Organize($space);

$data = $linker->GetPatches();
$pub  = $linker->GetPublics();
$p = Array();
foreach($pub as $n=>$v)
  $p[$v] = $n;

foreach($data as $addr => $string)
{
  $b = strlen($string);
  $c = 0;
  for($a=0; $a<$b; ++$a)
  {
    if(isset($p[$a]))
    {
      if($c > 0) { $c=0; print "\n"; }
      print "{$p[$a]}: db ";
    }
    if($c) print ',';
    printf("0x%02X", ord($string[$a]));
    ++$c;
  }
  if($c) print "\n";
}
